package stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo2 {

    /*
         遍历/匹配（foreach/find/match）
     */
    public static void main(String[] args) {
        /*
        Stream也是支持类似集合的遍历和匹配元素的，只是Stream中的元素是以Optional类型存在的。Stream的遍历、匹配非常简单。
         */
        //定义集合
        List<Integer> list = Arrays.asList(60, 70, 80, 90);
        Stream<Integer> stream = list.stream();//单线程Stream
        stream.forEach(item -> System.out.print(item + " "));
        System.out.println("\n---------------------------");
        list.parallelStream().forEach(item -> System.out.print(item + " "));//多线程Stream输出
        System.out.println("\n---------------------------");
        //findFirst 作用是返回集合中第一个元素
        Integer integer = list.stream().filter(item -> item > 60).findFirst().get();
        System.out.println("第一个大于60的元素是：" + integer);//输出：70
        System.out.println("---------------------------");
        // 3. 找到list集合中任意一个大于8的元素
        //
        // filter作用是过滤集合中的元素，返回满足条件的元素
        // findAny作用是返回集合中任意一个元素
        // get()作用是返回对象中的元素
        Integer anyone = list.parallelStream().filter(item -> item > 8).findAny().get();
        System.out.println("任意一个大于8的元素是：" + anyone);
        // 4. 判断集合中是否存在大于50的元素  anyMatch作用是判断集合中的元素是否有满足条件的
        boolean b = list.stream().anyMatch(item -> item > 50);
        System.out.println("集合中是否存在大于50的元素：" + b);
        // 5. 判断集合中所有元素是否都大于2  allMatch作用是判断集合中的元素是否都满足条件
        boolean b1 = list.stream().allMatch(item -> item > 2);
        System.out.println("集合中所有元素是否都大于2：" + b1);
        // 6.判断集合中是否没有偶数  noMatch作用是判断集合中的元素是否没有满足条件
        boolean b2 = list.stream().noneMatch(item -> item % 2 == 0);
        System.out.println("集合中不存在偶数：" + b2);
    }
}
